From: Jan Beulich Date: Thu, 12 May 2016 12:24:39 +0000 (+0200) Subject: Revert "blktap2: Use RING_COPY_REQUEST" X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~1125 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22Dat/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22Dat?a=commitdiff_plain;h=744fe0347d584f8b80b91ece93ef87e903c41bfa;p=xen.git Revert "blktap2: Use RING_COPY_REQUEST" This reverts commit 19f6c522a6a9599317ee1d8c4a155d1400d04c89. It did wrongly get associated with XSA-155, and was (rightfully) never backported to any of the stable trees. See also http://lists.xenproject.org/archives/html/xen-devel/2016-03/msg00571.html. Signed-off-by: Jan Beulich Acked-by: Wei Liu Acked-by: Konrad Rzeszutek Wilk Release-acked-by: Wei Liu --- diff --git a/tools/blktap2/drivers/block-log.c b/tools/blktap2/drivers/block-log.c index 5f3bd3598c..5330cdc436 100644 --- a/tools/blktap2/drivers/block-log.c +++ b/tools/blktap2/drivers/block-log.c @@ -494,12 +494,11 @@ static int ctl_kick(struct tdlog_state* s, int fd) reqstart = s->bring.req_cons; reqend = s->sring->req_prod; - xen_mb(); BDPRINTF("ctl: ring kicked (start = %u, end = %u)", reqstart, reqend); while (reqstart != reqend) { /* XXX actually submit these! */ - RING_COPY_REQUEST(&s->bring, reqstart, &req); + memcpy(&req, RING_GET_REQUEST(&s->bring, reqstart), sizeof(req)); BDPRINTF("ctl: read request %"PRIu64":%u", req.sector, req.count); s->bring.req_cons = ++reqstart; diff --git a/tools/blktap2/drivers/tapdisk-vbd.c b/tools/blktap2/drivers/tapdisk-vbd.c index e2e9cd5bc9..fd4999a5ec 100644 --- a/tools/blktap2/drivers/tapdisk-vbd.c +++ b/tools/blktap2/drivers/tapdisk-vbd.c @@ -1555,7 +1555,7 @@ tapdisk_vbd_pull_ring_requests(td_vbd_t *vbd) int idx; RING_IDX rp, rc; td_ring_t *ring; - blkif_request_t req; + blkif_request_t *req; td_vbd_request_t *vreq; ring = &vbd->ring; @@ -1566,16 +1566,16 @@ tapdisk_vbd_pull_ring_requests(td_vbd_t *vbd) xen_rmb(); for (rc = ring->fe_ring.req_cons; rc != rp; rc++) { - RING_COPY_REQUEST(&ring->fe_ring, rc, &req); + req = RING_GET_REQUEST(&ring->fe_ring, rc); ++ring->fe_ring.req_cons; - idx = req.id; + idx = req->id; vreq = &vbd->request_list[idx]; ASSERT(list_empty(&vreq->next)); ASSERT(vreq->secs_pending == 0); - memcpy(&vreq->req, &req, sizeof(blkif_request_t)); + memcpy(&vreq->req, req, sizeof(blkif_request_t)); vbd->received++; vreq->vbd = vbd;